package com.huarun.common;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
//import com.github.pagehelper.PageHelper;
//import com.github.pagehelper.PageInfo;
import com.huarun.common.util.PageBean;

/**
 * 
 * @author hqy
 * @创建时间   2018-10-17 13:55
 * @Description Service基类
 * @param <D>
 * @param <T>
 */
public abstract class BaseServiceImpl<D extends BaseDao<T>, T> implements IBaseService<T> {

	/**
	 * 持久层对象
	 */
	@Autowired
	protected D dao;

	public D getDao() {
		return dao;
	}

	public void setDao(D dao) {
		this.dao = dao;
	}

	/**
	 *  根据主键查询
	 * 
	 * @param id
	 * @return
	 */
	@Override
	public T getById(int id) {
		return dao.selectByPrimaryKey(id);
	}

	/**
	 * 查询列表数据
	 * @param entity
	 * @return
	 */
	@Override
	public List<T> findList(Map<String, Object> params) {
		return dao.findList(params);
	}
	//
	//	/**
	//	 * 分页查询所有告警列表
	//	 * @return 返回告警列表
	//	 */
	//	@Override
	//	public PageBean<T> findListPage(Map<String, Object> params) {
	//		int page=0;
	//		int rows=0;
	//		if (params.get("page") == null) {
	//			page = 1;
	//		}else {
	//			page=Integer.parseInt(params.get("page").toString());
	//		}
	//		if (params.get("rows") == null) {
	//			rows = 10;
	//		}else {
	//			rows=Integer.parseInt(params.get("rows").toString());
	//		}
	//		
	//		PageHelper.startPage(page, rows);
	//		PageInfo<T> pageInfo = new PageInfo<T>(dao.findList(params));
	//		PageBean<T> pages = new PageBean<>();
	//		pages.setCurrPage(page);
	//		pages.setPageSize(pageInfo.getPageSize());
	//		pages.setTotalCount(pageInfo.getTotal());
	//		pages.setPages(pageInfo.getList());
	//		return pages;
	//	}

	@Override
	public PageBean<T> findListPage(Map<String, Object> params) {
		Integer page = (Integer) params.get("page");
		Integer rows = (Integer) params.get("rows");
		if (page == null) {
			page = 1;
		}
		if (rows == null) {
			rows = 10;
		}
		PageHelper.startPage(page, rows);
		PageInfo<T> pageInfo = new PageInfo<T>(dao.findList(params));
		PageBean<T> pages = new PageBean<>();
		pages.setCurrPage(page);
		pages.setPageSize(rows);
		pages.setTotalCount(pageInfo.getTotal());
		pages.setTotalPageCount(pageInfo.getPages());
		pages.setPages(pageInfo.getList());
		return pages;
	}

	/**
	 * 保存数据
	 * @param entity
	 */
	@Override
	public int save(T entity) {
		int result = dao.insert(entity);
		return result;
	}

	/**
	 * 更新
	 * @param entity
	 */
	@Override
	public int update(T entity) {
		int result = dao.updateByPrimaryKeySelective(entity);
		return result;
	}

	/**
	 * 删除数据
	 * @param entity
	 */
	@Override
	public int delete(int id) {
		return dao.deleteByPrimaryKey(id);
	}

	/**
	 * 删除数据
	 * @param entity
	 */
	@Override
	public int deleteAll(Map<String, Object> params) {
		return dao.deleteAll(params);
	}

	@Override

	public T getBeanByParams(Map<String, Object> params) {
		return dao.getBeanByParams(params);
	}

}
